from django.contrib.syndication.views import Feed
from django.urls import reverse
from django.utils.feedgenerator import Rss201rev2Feed

from .models import Post


class ExtendedRSSFeed(Rss201rev2Feed):
    def add_item_elements(self,handler,item):
        super(ExtendedRSSFeed,self).add_item_elements(handler,item)
        handler.addQuickElement('content:html',item['content_html'])


class LatestPostFeed(Feed):
    # 默认使用 Rss201rev2Feed 这里写出来是标明这个地方可以被赋值为其他类型，我们可以进行定制。
    feed_type=Rss201rev2Feed
    #feed_type=ExtendedRSSFeed
    title="Typeidea Blog System"
    link="/rss/"
    description="typeidea is a blog system power by django"

    # 返回所有文章
    def items(self):
        return Post.objects.filter(status=Post.STATUS_NORMAL)[:5]

    # 返回文章标题
    def item_title(self,item):
        return item.title
    
    def item_description(self,item):
        #return item.desc
        # 返回文章内容全部内容
        #return item.content
        #使用切片方式输出文章前30个字
        return item.content[:30]

    # 返回文章详情页的路由
    def item_link(self,item):
        return reverse('post-detail',args=[item.pk])

    '''
    #配合上面的 feed_type=ExtendedRSSFeed 使用，但是目前有错误尚未解决，暂时无法使用
    def item_extra_kwargs(self,item):
        return {'content_html':self.item_content_html(item)}
    
    def item_content_html(self,item):
        return item.content_html
    '''